/******************************************************************
 * 作者：sipeiliu
 * 邮箱：sipeiliu@163.com
 * 描述：主函数，初始化程序
 * 日期：2023.3.10
 ******************************************************************/
#include <stdio.h>
#include <pthread.h>

#include "/opt/sighter/inc/motor.h" 
#include "/opt/sighter/inc/speed.h"
#include "/opt/sighter/inc/cruise.h"
#include "/opt/sighter/inc/key.h"
#include "/opt/sighter/inc/distance.h"
#include "/opt/sighter/inc/secure.h"
#include "/opt/sighter/inc/uart.h"

/*主入口函数*/
int main(int argc,char * argv[])
{
    int ret;                    // 函数返回值

    pthread_t tid_curise;       // 巡航线程ID
    pthread_t tid_key;          // 键盘线程ID
    pthread_t tid_distance;     // 距离线程ID
    pthread_t tid_speed;        // 速度线程ID
    pthread_t tid_secure;       // 安全线程ID
    pthread_t tid_uart;         // 串口线程ID

    enable_motor();             // 使能电机

    /*拉起多线程*/
    ret = pthread_create(&tid_curise, NULL, thread_cruise, NULL); //巡航模式
    if(ret != 0) //创建失败，返回错误码
    {
        printf("thread_curise error: %d", ret);
    }

    // ret = pthread_create(&tid_key, NULL, thread_key, NULL); //键盘控制
    // if(ret != 0) //创建失败，返回错误码
    // {
    //     printf("thread_key error: %d", ret);
    // }

    // ret = pthread_create(&tid_distance, NULL, thread_distance, NULL); //距离控制
    // if(ret != 0) //创建失败，返回错误码
    // {
    //     printf("thread_distance error: %d", ret);
    // }

    // ret = pthread_create(&tid_speed, NULL, thread_speed, NULL); //速度控制
    //  if(ret != 0) //创建失败，返回错误码
    // {
    //     printf("thread_speed error: %d", ret);
    // }

    // ret = pthread_create(&tid_secure, NULL, thread_secure, NULL); //安全监控
    // if(ret != 0) //创建失败，返回错误码
    // {
    //     printf("thread_secure error: %d", ret);
    // }

    // ret = pthread_create(&tid_uart, NULL, thread_uart, NULL); //串口调试
    // if(ret != 0) //创建失败，返回错误码
    // {
    //     printf("thread_uart error: %d", ret);
    // }

    /*回收线程，主线程阻塞等待*/
    // ret = pthread_join(tid_curise, NULL);
    // if(ret != 0)
    // {
    //     perror("pthread_join wrong");
    // }

    ret = pthread_join(tid_curise, NULL);
    if(ret != 0)
    {
        perror("pthread_join wrong");
    }
}